c4620b
@@ -24,7 +24,9 @@
 import java.util.Map;
 
 import org.apache.hadoop.hive.common.type.Decimal128;
+import org.apache.hadoop.hive.common.type.HiveChar;
 import org.apache.hadoop.hive.common.type.HiveDecimal;
+import org.apache.hadoop.hive.common.type.HiveVarchar;
 import org.apache.hadoop.hive.ql.metadata.HiveException;
 import org.apache.hadoop.hive.serde2.io.ByteWritable;
 import org.apache.hadoop.hive.serde2.io.DateWritable;
@@ -404,8 +406,7 @@
public void assignObjectValue(Object val, int destIndex) throws HiveException {
           public void assignObjectValue(Object val, int destIndex) throws HiveException {
             if (val == null) {
               assignNull(destIndex);
-            }
-            else {
+            } else {
               Text bw = (Text) val;
               byte[] bytes = bw.getBytes();
               assignBytes(bytes, 0, bw.getLength(), destIndex);
@@ -413,6 +414,35 @@
public void assignObjectValue(Object val, int destIndex) throws HiveException {
           }
         }.init(outputBatch, (BytesColumnVector) destCol);
         break;
+      case VARCHAR:
+        outVCA = new VectorBytesColumnAssign() {
+          @Override
+          public void assignObjectValue(Object val, int destIndex) throws HiveException {
+            if (val == null) {
+              assignNull(destIndex);
+            } else {
+              HiveVarchar hiveVarchar = (HiveVarchar) val;
+              byte[] bytes = hiveVarchar.getValue().getBytes();
+              assignBytes(bytes, 0, bytes.length, destIndex);
+            }
+          }
+        }.init(outputBatch, (BytesColumnVector) destCol);
+        break;
+      case CHAR:
+        outVCA = new VectorBytesColumnAssign() {
+        @Override
+          public void assignObjectValue(Object val, int destIndex) throws HiveException {
+            if (val == null) {
+              assignNull(destIndex);
+            } else {
+              // We store CHAR type stripped of pads.
+              HiveChar hiveChar = (HiveChar) val;
+              byte[] bytes = hiveChar.getStrippedValue().getBytes();
+              assignBytes(bytes, 0, bytes.length, destIndex);
+            }
+          }
+        }.init(outputBatch, (BytesColumnVector) destCol);
+        break;
       default:
         throw new HiveException("Incompatible Bytes vector column and primitive category " +
             category);
